package com.shuosen.gmall.order.task;

import com.shuosen.gmall.bean.OrderInfo;
import com.shuosen.gmall.service.OrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.util.List;

@EnableScheduling
@Component
public class OrderTask {

    @Autowired
    private OrderService orderService  ;

    /***
     * 分 时   日   月   周   年
     * 每隔5秒执行一次
     *  5 * * * * ? 每分钟的第五秒
     *  0/5 * * * * ?  每隔5秒
     *  晚上做统计工作 ，如果凌晨有支付的订单 。
     */
    @Scheduled(cron = "5 * * * * ?")
    public void test01(){
        System.out.println("test01");
    }

    @Scheduled(cron = "0/20 * * * * ?")
    public void checkOrder(){

        long startTime = System.currentTimeMillis();
        //获取过期订单列表
        List<OrderInfo> expireList =  orderService.getExpiredOrderList();
        if(expireList!=null && expireList.size()>0){
            for (OrderInfo orderInfo : expireList) {
                //处理未完成订单
                orderService.execExpiredOrder(orderInfo);
            }
        }
        long costTime = System.currentTimeMillis() - startTime;
        System.out.println("一共处理"+expireList.size()+"个订单,共消耗"+costTime+"毫秒");
    }
}
